package Negocio;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author grodriguezpeinado
 */
public class CitaPendiente {
    
    Integer ID;
    String fechapeticion;
    String fechahora;
    String tratamiento;
    String especialista;
    String emailCliente;
    String comentarios;

    public CitaPendiente() {
    }

    public Integer getID() {
        return ID;
    }

    public void setID(Integer ID) {
        this.ID = ID;
    }

    public String getComentarios() {
        return comentarios;
    }

    public void setComentarios(String comentarios) {
        this.comentarios = comentarios;
    }

    public String getEmailCliente() {
        return emailCliente;
    }

    public void setEmailCliente(String emailCliente) {
        this.emailCliente = emailCliente;
    }

    public String getEspecialista() {
        return especialista;
    }

    public void setEspecialista(String especialista) {
        this.especialista = especialista;
    }

    public String getFechahora() {
        return fechahora;
    }

    public void setFechahora(String fechahora) {
        this.fechahora = fechahora;
    }

    public String getFechapeticion() {
        return fechapeticion;
    }

    public void setFechapeticion(String fechapeticion) {
        this.fechapeticion = fechapeticion;
    }

    public String getTratamiento() {
        return tratamiento;
    }

    public void setTratamiento(String tratamiento) {
        this.tratamiento = tratamiento;
    }
    
    public boolean nuevaPeticion(){
        ObjetoDB o = new ObjetoDB();
        
        o.setTabla("CitaPendiente");
        o.addCampo("fechaHora", fechahora);
        o.addCampo("tratamiento", tratamiento);
        o.addCampo("especialista", especialista);
        o.addCampo("emailCliente", emailCliente);
        o.addCampo("comentarios", comentarios);
        this.fechapeticion = o.getFechaCreacion();
        o.addCampo("fechaPeticion", fechapeticion);
        
        AdminDB adb = new AdminDB();
        return adb.guardar(o);
    }
    
    public boolean borrar(){
        AdminDB adb = new AdminDB();
        
        ObjetoDB o = new ObjetoDB();
        o.setTabla("CitaPendiente");
        o.addCampo("ID", String.valueOf(ID)); 
        return adb.borrar(o);
    }
    
    public void getByFechaHora(Connection conn, String fechaPeticion){
       try
       {
           Statement stmt = conn.createStatement();
           ResultSet rset = stmt.executeQuery("SELECT * FROM `bysDB`.`CitaPendiente` WHERE fechaPeticion='"+fechaPeticion+"';");
                      
           if(rset.next()){
               int id = rset.getInt("ID");
               this.fechahora = rset.getString("fechaHora");
               this.tratamiento = rset.getString("tratamiento");
               this.especialista = rset.getString("especialista");
               this.emailCliente = rset.getString("emailCliente");
               this.comentarios = rset.getString("comentarios");
               this.fechapeticion = rset.getString("fechaPeticion").replace(".0", "");
           }
           if (rset !=null) rset.close();
           if (stmt != null) stmt.close();
           if (conn != null)conn.close();

        } catch (Exception e) {
            Logger.getLogger("PeticionCita").log(Level.SEVERE, "ERROR: " + e.getLocalizedMessage());
        }
    }
    public void getByID(Connection conn, int ID){
       try
       {
           Statement stmt = conn.createStatement();
           ResultSet rset = stmt.executeQuery("SELECT * FROM `bysDB`.`CitaPendiente` WHERE ID="+ID+";");
                      
           if(rset.next()){
               this.ID = rset.getInt("ID");
               this.fechahora = rset.getString("fechaHora");
               this.tratamiento = rset.getString("tratamiento");
               this.especialista = rset.getString("especialista");
               this.emailCliente = rset.getString("emailCliente");
               this.comentarios = rset.getString("comentarios");
               this.fechapeticion = rset.getString("fechaPeticion").replace(".0", "");
           }
           if (rset !=null) rset.close();
           if (stmt != null) stmt.close();
           if (conn != null)conn.close();

        } catch (Exception e) {
            Logger.getLogger("PeticionCita").log(Level.SEVERE, "ERROR: " + e.getLocalizedMessage());
        }
    }
    
    public List<CitaPendiente> getAllCitas(Connection conn){
       try
       {
           Statement stmt = conn.createStatement();
           ResultSet rset = stmt.executeQuery("SELECT * FROM `bysDB`.`CitaPendiente`");
           
           List<CitaPendiente> citas = new ArrayList<CitaPendiente>();
                      
           while(rset.next()){
               CitaPendiente c = new CitaPendiente();
               c.setID(rset.getInt("ID"));
               c.setFechahora(rset.getString("fechaHora"));
               c.setTratamiento(rset.getString("tratamiento"));
               c.setEspecialista(rset.getString("especialista"));
               c.setEmailCliente(rset.getString("emailCliente"));
               c.setComentarios(rset.getString("comentarios"));
               c.setFechapeticion(rset.getString("fechaPeticion").replace(".0", ""));
               citas.add(c);
           }
           if (rset !=null) rset.close();
           if (stmt != null) stmt.close();
           if (conn != null)conn.close();

           return citas;

        } catch (Exception e) {
            Logger.getLogger("PeticionCita").log(Level.SEVERE, "ERROR: " + e.getLocalizedMessage());
            return null;
        }
    }
    
    public boolean adjudicar() throws SQLException{
        AdminDB adb = new AdminDB();
        Cita cita = new Cita();
        
        Cliente cli = new Cliente();
        try{
            cli.getByEmail(adb.getConnection(), emailCliente);
            cita.setCliente(cli);
        }catch(Exception e){
            return false;
        }
                
        Tratamiento t = new Tratamiento();
        t.getbyNombre(adb.getConnection(), tratamiento);
        cita.setTratamiento(t);
        
        Profesional p = new Profesional();
        p.getByNombre(adb.getConnection(), especialista);
        cita.setProfesional(p);
        
        cita.setEstado("Adj");
        cita.setFecha(adb.toSQLDate(fechahora.substring(0,10)));
        cita.setHora(fechahora.substring(17));
        cita.setComentarios(comentarios);
        
        if(cita.guardar())        
            return borrar();
        else return false;
    }
    
}
